<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script>
        // 面试题 什么是原型？
        /* ====================  ===================== */
        // 原型就是一个对象，也叫做原型对象
        // 1. 每个函数都有prototype属性，它的值是一个指针，指向的就是原型对象。
        // 2. 通过构造函数生成的实例，都有一个__proto__属性，也指向原型对象。
        // 3. 原型上默认有一个constructor属性，指回构造函数

        // 原型的作用：
        // 我们可以把一些公共的属性和方法放到原型上，
        // 通过构造函数创建的实例，都共享原型上的属性和方法。
        /* ====================  ===================== */

        function A(){}
        const a = new A()

        a.__proto__ === A.prototype

        // 原型的结构
        A.prototype = {
            constructor: A
            // ...其他原型属性和方法
        }
        a.__proto__ = {
            constructor: A
            // ...其他原型属性和方法
        }

    </script>
</body>
</html>